1 /* 2 * The MIT License (MIT) 3 * 4 * Copyright (c) 2014 Devisualization (Richard Andrew Cattermole) 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a copy 7 * of this software and associated documentation files (the "Software"), to deal 8 * in the Software without restriction, including without limitation the rights 9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 * copies of the Software, and to permit persons to whom the Software is 11 * furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included in all 14 * copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 * SOFTWARE. 23 */ 24 module devisualization.util.opengl.function_wrappers.v15; 25 import gl = derelict.opengl3.gl; 26 import glarb = derelict.opengl3.arb; 27 28 // no need to polute name space any further when its args don't change 29 public import derelict.opengl3.gl : glIsQuery, glIsBuffer; 30 31 enum QueryTargets { 32 SamplesPassed = gl.GL_SAMPLES_PASSED, 33 AnySamplesPassed = gl.GL_ANY_SAMPLES_PASSED, 34 AnySamplesPassedConservative = gl.GL_ANY_SAMPLES_PASSED_CONSERVATIVE, 35 PrimitivesGenerated = gl.GL_PRIMITIVES_GENERATED, 36 TransformFeedbackPrimitivesWritten = gl.GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, 37 TimeElapsed = gl.GL_TIME_ELAPSED 38 } 39 40 enum QueryTarget { 41 SamplesPassed = gl.GL_SAMPLES_PASSED, 42 AnySamplesPassed = gl.GL_ANY_SAMPLES_PASSED, 43 AnySamplesPassedConservative = gl.GL_ANY_SAMPLES_PASSED_CONSERVATIVE, 44 PrimitivesGenerated = gl.GL_PRIMITIVES_GENERATED, 45 TransformFeedbackPrimitivesWritten = gl.GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, 46 TimeElapsed = gl.GL_TIME_ELAPSED, 47 TimeStamp = gl.GL_TIMESTAMP 48 } 49 50 enum QueryNames { 51 CurrentQuery = gl.GL_CURRENT_QUERY, 52 QueryCounterBits = gl.GL_QUERY_COUNTER_BITS 53 } 54 55 enum QueryResultNames { 56 Result = gl.GL_QUERY_RESULT, 57 ResultAvailable = gl.GL_QUERY_RESULT_AVAILABLE 58 } 59 60 enum BindBufferTargets { 61 ArrayBuffer = gl.GL_ARRAY_BUFFER, 62 AtomicCounterBuffer = gl.GL_ATOMIC_COUNTER_BUFFER, 63 CopyReadBuffer = gl.GL_COPY_READ_BUFFER, 64 CopyWriteBuffer = gl.GL_COPY_WRITE_BUFFER, 65 DrawIndirectBuffer = gl.GL_DRAW_INDIRECT_BUFFER, 66 DispatchIndirectBuffer = gl.GL_DISPATCH_INDIRECT_BUFFER, 67 ElementArrayBuffer = gl.GL_ELEMENT_ARRAY_BUFFER, 68 PixelPackBuffer = gl.GL_PIXEL_PACK_BUFFER, 69 PixelUnpackBuffer = gl.GL_PIXEL_UNPACK_BUFFER, 70 QueryBuffer = gl.GL_QUERY_BUFFER, 71 ShaderStorageBuffer = gl.GL_SHADER_STORAGE_BUFFER, 72 TextureBuffer = gl.GL_TEXTURE_BUFFER, 73 TransformFeedbackBuffer = gl.GL_TRANSFORM_FEEDBACK_BUFFER, 74 UniformBuffer = gl.GL_UNIFORM_BUFFER 75 } 76 77 enum BufferUsages { 78 StreamDraw = gl.GL_STREAM_DRAW, 79 StreamRead = gl.GL_STREAM_READ, 80 StreamCopy = gl.GL_STREAM_COPY, 81 StaticDraw = gl.GL_STATIC_DRAW, 82 StaticRead = gl.GL_STATIC_READ, 83 StaticCopy = gl.GL_STATIC_COPY, 84 DynamicDraw = gl.GL_DYNAMIC_DRAW, 85 DynamicRead = gl.GL_DYNAMIC_READ, 86 DynamicCopy = gl.GL_DYNAMIC_COPY 87 } 88 89 enum BufferAccess { 90 ReadOnly = gl.GL_READ_ONLY, 91 WriteOnly = gl.GL_WRITE_ONLY, 92 ReadWrite = gl.GL_READ_WRITE 93 } 94 95 enum GetBufferTargets { 96 ArrayBuffer = gl.GL_ARRAY_BUFFER, 97 ElementArrayBuffer = gl.GL_ELEMENT_ARRAY_BUFFER 98 } 99 100 enum GetBufferValues { 101 BufferSize = gl.GL_BUFFER_SIZE, 102 BufferUsage = gl.GL_BUFFER_USAGE 103 } 104 105 uint[] glGenQueries(int n) { 106 uint[] ret; 107 gl.glGenQueries(n, ret.ptr); 108 return ret; 109 } 110 111 uint glGenQueries() { 112 uint ret; 113 gl.glGenQueries(1, &ret); 114 return ret; 115 } 116 117 void glDeleteQueries(uint[] ids) { 118 gl.glDeleteQueries(cast(uint) ids.length, ids.ptr); 119 } 120 121 void glDeleteQueries(uint id) { 122 gl.glDeleteQueries(1, &id); 123 } 124 125 void glBeginQuery(QueryTargets target, uint id) { 126 gl.glBeginQuery(cast(gl.GLenum)target, id); 127 } 128 129 void glEndQuery(QueryTargets target) { 130 gl.glEndQuery(cast(gl.GLenum)target); 131 } 132 133 void glGetQueryiv(QueryTarget target, QueryNames pname, int[] params) { 134 gl.glGetQueryiv(cast(gl.GLenum)target, cast(gl.GLenum)pname, params.ptr); 135 } 136 137 int[] glGetQueryObjectiv(uint id, QueryResultNames pname) { 138 int[] ret; 139 gl.glGetQueryObjectiv(id, cast(gl.GLenum)pname, ret.ptr); 140 return ret; 141 } 142 143 uint[] glGetQueryObjectuiv(uint id, QueryResultNames pname) { 144 uint[] ret; 145 gl.glGetQueryObjectuiv(id, cast(gl.GLenum)pname, ret.ptr); 146 return ret; 147 } 148 149 long[] glGetQueryObjecti64v(uint id, QueryResultNames pname) { 150 long[] ret; 151 glarb.glGetQueryObjecti64v(id, cast(gl.GLenum)pname, ret.ptr); 152 return ret; 153 } 154 155 ulong[] glGetQueryObjectui64v(uint id, QueryResultNames pname) { 156 ulong[] ret; 157 glarb.glGetQueryObjectui64v(id, cast(gl.GLenum)pname, ret.ptr); 158 return ret; 159 } 160 161 void glBindBuffer(BindBufferTargets target, uint buffer) { 162 gl.glBindBuffer(cast(gl.GLenum)target, buffer); 163 } 164 165 void glDeleteBuffer(uint id) { 166 gl.glDeleteBuffers(1, &id); 167 } 168 169 void glDeleteBuffers(uint[] buffers) { 170 gl.glDeleteBuffers(cast(int)buffers.length, buffers.ptr); 171 } 172 173 uint glGenBuffer() { 174 uint ret; 175 gl.glGenBuffers(1, &ret); 176 return ret; 177 } 178 179 uint[] glGenBuffers(int n) { 180 uint[] ret; 181 gl.glGenBuffers(n, ret.ptr); 182 return ret; 183 } 184 185 void glBufferData(BindBufferTargets target, void[] data, BufferUsages usage) { 186 gl.glBufferData(cast(gl.GLenum)target, cast(int)data.length, data.ptr, cast(gl.GLenum)usage); 187 } 188 189 void glBufferSubData(BindBufferTargets target, int offset, void[] data) { 190 gl.glBufferSubData(cast(gl.GLenum)target, cast(int)offset, cast(int)data.length, data.ptr); 191 } 192 193 void glGetBufferSubData(BindBufferTargets target, int offset, ref void[] data) { 194 gl.glGetBufferSubData(cast(gl.GLenum)target, cast(int)offset, cast(int)data.length, data.ptr); 195 } 196 197 void* glMapBuffer(BindBufferTargets target, BufferAccess access) { 198 return gl.glMapBuffer(cast(gl.GLenum)target, cast(gl.GLenum)access); 199 } 200 201 bool glUnmapBuffer(BindBufferTargets target) { 202 return cast(bool)gl.glUnmapBuffer(cast(gl.GLenum)target); 203 } 204 205 void glGetBufferPointerv(BindBufferTargets target, void[] params) { 206 gl.glGetBufferPointerv(cast(gl.GLenum)target, gl.GL_BUFFER_MAP_POINTER, params.ptr); 207 } 208 209 int[] glGetBufferParameteriv(GetBufferTargets target, GetBufferValues value) { 210 int[] ret; 211 gl.glGetBufferParameteriv(cast(gl.GLenum)target, value, ret.ptr); 212 return ret; 213 }